package com.ruoyi.project.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.core.base.Field;
import com.ruoyi.project.service.IProjectPhaseService;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
@ApiModel("阶段字典配置表")
@TableName(value = "phase_dictionary",autoResultMap = true)
public class PhaseDictionary  extends Field {
//    private static final long serialVersionUID = 1L;
    /**
     * 阶段编码
     */
    @ApiModelProperty("阶段编码")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 阶段名称
     */
    @ApiModelProperty("阶段名称")
    private String phaseName;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Integer soft;

    /**
     * 阶段描述
     */
    @ApiModelProperty("阶段描述")
    private String phaseDesc;

    /**
     * 该阶段是否必须（0否1是）
     */
    @ApiModelProperty("该阶段是否必须（0否1是）")
    private Integer isNeed;

    /**
     * 该阶段是否需要附件（0否1是）
     */
    @ApiModelProperty("文件是否全量 0否1是 全量表示选择的文件类型必须全部上传 选择否则表示上传其中之一就可以")
    private Integer allFile;

    /**
     * 该阶段是否需要付款信息（0否1是）
     */
    @ApiModelProperty("该阶段是否需要付款信息（0否1是）")
    private Integer needPay;

    /**
     *
     */
    @ApiModelProperty("是否必须全部人同意才科流转到写一个环节 0否1是")
    private Integer allPerson;

    /**
     * 是否需要实施工作日志（0否1是）
     */
    @ApiModelProperty("是否需要实施工作日志（0否1是）")
    private Integer needImplement;

    /**
     * 是否需要质保信息（0否1是）
     */
    @ApiModelProperty("是否需要质保信息（0否1是）")
    private Integer needWarranty;



    /**
     * 是否需要全部操作人同意
     */
    private Integer needOperator ;

    private Integer needAccounting;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;


    //当前环节操作人id  指定了操作人之和 不用校验操作岗位了
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> operatorId = new ArrayList<>();

    //当前环节操作人  谁去点击下一步 可多选
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> postId = new ArrayList<>();

    //当前环节参与人 指定哪些岗位的人参与 项目经理 销售负责人等
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> needPersonId = new ArrayList<>();

    //当前环节需要的附件类型
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> needFileType = new ArrayList<>();


    //哪些岗位的人能够添加参与人员
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> addPerson = new ArrayList<>();

    //哪些岗位的人能够添加附件
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> addFile = new ArrayList<>();

    //哪些岗位的人能够添加付款信息
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> addPay = new ArrayList<>();

    //哪些岗位的人能够添加实施日志
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> addImplement = new ArrayList<>();

    //哪些岗位的人能够添加核算信息
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> addAccounting = new ArrayList<>();

    //哪些岗位的人能够添加质保信息
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> addWarranty = new ArrayList<>();


    //项目id
    @TableField(exist = false)
    private String projectNo;

}